home *** CD-ROM | disk | FTP | other *** search
- /* Simple Sockets Toolkit Demo.
- * Copyright 1994 Intelec Systems Corportion, APIary.
- * This demonstration allows you to send and receive
- * text messages between two machines.
- * syntax: SIMPSKTC <Local Name> <Remote Name>
- *
- *
- * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
- * KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
- * PURPOSE.
- */
-
-
- #include <skt.h>
- #include <mem.h>
- #include <string.h>
-
- long FAR PASCAL WndProc( HWND , UINT , WPARAM , LPARAM );
- BOOL CALLBACK DlgProc( HWND , UINT , WPARAM , LPARAM );
-
- HINSTANCE hInst;
- BYTE Msg[ 128 ];
- BYTE LocalName[ 17 ];
- BYTE RemoteName[ 17 ];
- DWORD hSocket;
-
-
- int PASCAL WinMain ( HANDLE hInstance ,
- HANDLE hPrevInstance ,
- LPSTR lpszCmdLine ,
- int nCmdShow )
- {
- WNDCLASS wndclass;
- HWND hwnd;
- MSG msg;
-
- if( sscanf( lpszCmdLine , "%s %s" , LocalName , RemoteName ) < 2 )
- {
- MessageBox( GetFocus() ,
- "syntax:\x0dSIMPSKTC <LocalName> <RemoteName>" ,
- "Simple Socket Demo" ,
- MB_ICONSTOP );
- return 1;
- }
-
- if (!hPrevInstance)
- {
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
- wndclass.lpfnWndProc = WndProc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = 0;
- wndclass.hInstance = hInstance;
- wndclass.hIcon = LoadIcon(hInstance, "ICON_1");
- wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
- wndclass.hbrBackground = COLOR_WINDOW + 1;
- wndclass.lpszMenuName = "MAIN_MENU";
- wndclass.lpszClassName = "SimpSktC";
-
- if (!RegisterClass (&wndclass))
- return FALSE ;
- }
-
-
- hInst = hInstance;
-
- hwnd = CreateWindow ( "SimpSktC",
- "Simple Socket Demo",
- WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- CW_USEDEFAULT,
- NULL,
- NULL,
- hInstance,
- NULL );
- ShowWindow( hwnd , nCmdShow );
- UpdateWindow( hwnd );
-
- while ( GetMessage( &msg , NULL , 0 , 0 ) )
- {
- TranslateMessage( &msg ) ;
- DispatchMessage( &msg ) ;
- }
-
- return msg.wParam ;
- }
-
- long FAR PASCAL WndProc( HWND hWnd,
- UINT iMessage ,
- WPARAM wParam ,
- LPARAM lParam )
- {
- switch ( iMessage )
- {
- case WM_CREATE:
- if( SktOpen( LocalName , 0 , hWnd , 128 ,
- 1 , 1 , 0 , &hSocket ) )
- {
- MessageBox( GetFocus() ,
- "Unable to open socket!" ,
- "Simple Socket Demo" ,
- MB_ICONSTOP );
- return -1;
- }
- SktSetTarget( hSocket , RemoteName , 0 , NULL );
- break;
-
- case WM_SKTEVENT:
- switch( wParam )
- {
- case SEV_READ:
- {
- LPSKTEVENT Evt = ( LPSKTEVENT ) lParam;
- _fmemset( Msg , '\0' , sizeof( Msg ) );
- _fmemcpy( Msg , Evt->lpBuffer , Evt->dwLength );
- MessageBox( hWnd ,
- Msg ,
- "Socket Event Read" ,
- MB_ICONEXCLAMATION );
- return 0L;
- }
- case SEV_WRITE:
- MessageBox( hWnd ,
- "Message sent!" ,
- "Socket Event Write" ,
- MB_ICONEXCLAMATION );
- return 0L;
- }
- case WM_DESTROY:
- SktClose( hSocket );
- PostQuitMessage( 0 );
- break;
-
- case WM_COMMAND:
- switch( wParam )
- {
- // Send
- case 1:
- {
- DLGPROC dlgproc;
- int Ret;
- dlgproc = MakeProcInstance( DlgProc , hInst );
- Ret = DialogBox( hInst , "SEND_DLG" , hWnd , dlgproc );
- FreeProcInstance( dlgproc );
- if( Ret )
- {
- if( hSocket )
- {
- SktWrite( hSocket ,
- Msg ,
- strlen( Msg ),
- 0 );
- }
- }
- break;
- }
-
- // Exit
- case 2:
- PostMessage( hWnd , WM_CLOSE , 0 , 0 );
- }
- break;
- }
- return DefWindowProc ( hWnd , iMessage , wParam , lParam ) ;
- }
-
- BOOL CALLBACK DlgProc( HWND hWnd,
- UINT iMessage ,
- WPARAM wParam ,
- LPARAM lParam )
- {
- switch ( iMessage )
- {
- case WM_INITDIALOG:
- return TRUE;
- case WM_COMMAND:
- switch( wParam )
- {
- case IDOK:
- SendDlgItemMessage( hWnd , 101 ,
- WM_GETTEXT ,
- sizeof( Msg ) ,
- ( LPARAM ) Msg );
- EndDialog( hWnd , TRUE );
- break;
- case IDCANCEL:
- EndDialog( hWnd , FALSE );
- }
- break;
- }
- return FALSE;
- }
-
-
-